home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_vol_lavatrap.cog < prev    next >
Text File  |  1999-11-15  |  20KB  |  740 lines

  1. # Jones 3D Cog Script
  2. #
  3. # VOL_LavaRoom.cog
  4. #
  5. # This cog will flood an area with lava, break apart a walkway 3do, and open the exit.
  6. #
  7. # [CM & tiny revision by HB]
  8. #
  9. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  10. # ========================================================================================
  11.  
  12. symbols
  13.    
  14.  
  15.     #...............MESSAGES..................
  16.     message  startup
  17.     message  activated
  18.     message  pulse
  19.     message  entered
  20.     message  arrived
  21.     message  exited
  22.  
  23.     
  24.     #...............ACTORS..................
  25.     thing   player    local
  26.     thing   indy
  27.  
  28.  
  29.     #...............COGS....................
  30.     cog        fieldCOG
  31.  
  32.     #...............PROPS..................
  33.     thing   block0         
  34.     thing   block1
  35.     thing   switch         
  36.     thing   walkway0         
  37.     thing   walkway1         
  38.     thing   walkway2         
  39.     thing   door
  40.     
  41.     thing   lava_chan
  42.     thing   lava_left
  43.     thing   lava_right
  44.  
  45.     thing    puzzleblock0
  46.     thing    puzzleblock1
  47.  
  48.         
  49.     thing    puzzleslab0
  50.     thing    puzzleslab1
  51.  
  52.     thing    puzzlecube0                                    
  53.     thing    puzzlecube1
  54.  
  55.     #...............CAMERAS..................
  56.     thing   switchcam
  57.     thing   camPos
  58.     thing   camPos2
  59.     thing    bridgeCam
  60.     thing    curCam                                        local
  61.     thing    blockCam                                        
  62.  
  63.     
  64.     #...............CAMERA TARGETS..................
  65.     thing   camtarget
  66.     thing   doorcamtarget        
  67.     
  68.  
  69.     #...............EVENTPOSITIONS..................
  70.     thing    deathspot                                    local
  71.     thing    lava_leftPos
  72.     thing    lava_rightPos
  73.     thing    flamespot
  74.     
  75.     surface    block0surf0                    mask=0x80        linkID=5
  76.     surface    block0surf1                    mask=0x80       linkID=5
  77.     surface    block0surf2                    mask=0x80       linkID=5
  78.     surface    block0surf3                    mask=0x80       linkID=5
  79.     
  80.     surface    block1surf0                    mask=0x80       linkID=6
  81.     surface    block1surf1                    mask=0x80       linkID=6
  82.  
  83.     sector    channelSECT
  84.     
  85.     # catwalk debris creation positions
  86.     thing    debspot0
  87.     thing    debspot1
  88.     thing    debspot2
  89.     thing    debspot3
  90.     thing    debspot4
  91.     thing    debspot5
  92.     thing    debspot6
  93.     
  94.     
  95.     #...............FLOOR SURFS..................
  96.     surface    lavaFACE0                                       linkID=2
  97.     surface    lavaFACE1                                      linkID=2
  98.     surface    lavaFACE2                                      linkID=2
  99.     surface    lavaFACE3                                      linkID=2
  100.     surface    lavaFACE4                                      linkID=2
  101.     surface    lavaFACE5                                      linkID=2
  102.     surface    lavaFACE6                                      linkID=2
  103.     surface    lavaFACE7                                      linkID=2
  104.     surface    lavaFACE8                                      linkID=2
  105.     surface    lavaFACE9                                      linkID=2
  106.     surface    lavaFACE10                                        linkID=2
  107.     surface    lavaFACE11                                        linkID=2
  108.  
  109.     #...............CANAL SURFS..................
  110.     surface    canalFACE0                                        linkID=2
  111.     surface    canalFACE1                                       linkID=2
  112.     surface    canalFACE2                                       linkID=2
  113.     surface    canalFACE3                                       linkID=2
  114.     surface    canalFACE4                                       linkID=2
  115.     surface    canalFACE5                                       linkID=2
  116.  
  117.  
  118.  
  119.     #...............TILE SURFS..................
  120.     surface    tileFACE0                                          
  121.     surface    tileFACE1                                          
  122.     surface    tileFACE2                                          
  123.     surface    tileFACE3                                          
  124.     surface    tileFACE4                                          
  125.     surface    tileFACE5                                          
  126.     surface    tileFACE6                                          
  127.     surface    tileFACE7                                          
  128.     surface    tileFACE8                                          
  129.     surface    tileFACE9                                          
  130.     surface    tileFACE10                                          
  131.     surface    tileFACE11                                          
  132.     surface    tileFACE12                                          
  133.     surface    tileFACE13                                          
  134.  
  135.     
  136.     
  137.     #...............KEYFRAMES..................
  138.     keyframe    inReach=in_activate_medium.key            local
  139.     
  140.     
  141.     #...............TEMPLATES..................
  142.     template    lavaspray
  143.     template    tempRefKill=ghost                        local
  144.     template    walkwayburning=lavadeathsparks            local
  145.     template    invis_shot=+dummy_bazooka                local
  146.     
  147.     # debris templates
  148.     template    fallwalkA=debcatbbama                    local        
  149.     
  150.     template    fallwalkB=debcatcbama                    local        
  151.     template    fallwalkC=debcatcbamb                    local        
  152.     
  153.     template    fallwalkD=debcatbbamc                    local        
  154.     template    fallwalkE=debcatbbamb                    local        
  155.     template    fallwalkF=debcatcbamc                    local        
  156.     
  157.     #...............MATERIALS..................
  158.     material    fireskin=gen_a_lavab.mat                local
  159.     material    tileskin=vol_wall_engraved_runes_clear.mat            local
  160.     
  161.     
  162.     #...............VARIABLES..................
  163.     int     flooded=0                                    local
  164.     int     dead=0                                        local
  165.     int     bridgeout=0                                    local
  166.     int     i=0                                            local
  167.     int     cueplayed=0                                    local
  168.     int     blockinzone0=0                                local
  169.     int     blockinzone1=0                                local
  170.     int     soundrun                                    local
  171.     
  172.     flex    clearfloor                                    local
  173.     flex    returncam                                    local
  174.     
  175.     #...............VECTORS..................
  176.     vector    look1                                        local
  177.     vector    cubePos                                        local
  178.  
  179.     #...............SOUNDS..................
  180.     sound   scream=INXJ015.WAV                            local
  181.     sound    ancientdevice=nub_aethdoorarm_start_c.wav    local
  182.     sound    waterrush=nub_bull_move2_c.wav                local
  183.     sound    stress=shs_beambreaking_c.wav                local
  184.     sound    breakway=shs_beamcrash_c.wav                local
  185.     sound    awe_cue=mus_gen_awechord1.wav                local
  186.  
  187.  
  188. end
  189.  
  190. # ========================================================================================
  191. code
  192.  
  193. startup:
  194.  
  195.     #    get the player
  196.     player = GetLocalPlayerThing();
  197.     
  198.     #    clear the floor surfaces that will become lava
  199.     for (i = 0; i <=11; i = i + 1)
  200.         {
  201.             SetFaceGeomode(lavaFACE0[i], 0);                    # make faces no draw
  202.             ClearSurfaceFlags(lavaFACE0[i], 0x200000);            # clear lava bit
  203.             SetAdjoinFlags(lavaFACE0[i], 2);                    # adjoin can be passed through
  204.             SetAdjoinFlags(GetSurfaceAdjoin(lavaFACE0[i]), 2);    # double adjoin clearing
  205.         }
  206.  
  207.     #    clear the canal surfaces that will become lava
  208.     for (i = 0; i <=5; i = i + 1)
  209.         {
  210.             SetFaceGeomode(canalFACE0[i], 0);
  211.             ClearSurfaceFlags(canalFACE0[i], 0x200000);
  212.             SetAdjoinFlags(canalFACE0[i], 2);
  213.             SetAdjoinFlags(GetSurfaceAdjoin(canalFACE0[i]), 2);
  214.         }
  215.  
  216.     #    remove the lava_chan and puzzleslabs from play
  217.     SetThingFlags(lava_chan, 0x10);
  218.     SetThingFlags(lava_left, 0x10);
  219.     SetThingFlags(lava_right, 0x10);
  220.     # get lava_chan to first pos
  221.     JumpToFrame(lava_chan, 1, channelSECT);
  222.     
  223.     # slabs no see
  224.     SetThingFlags(puzzleslab0, 0x10);
  225.     SetThingFlags(puzzleslab1, 0x10);
  226.     # slabs no collide
  227.     SetCollideType(puzzleslab0, 0);
  228.     SetCollideType(puzzleslab1, 0);
  229.     
  230.     # attach the slabs for flooded state to the push blocks 
  231.     AttachThingToThing(puzzleslab0, puzzleblock0);
  232.     AttachThingToThing(puzzleslab1, puzzleblock1);
  233.  
  234.     # attach the anti A-bug cubes to the puzzleblocks
  235.     AttachThingToThing(puzzlecube0, puzzleblock0);
  236.     AttachThingToThing(puzzlecube1, puzzleblock1);
  237.     SetCollideType(puzzlecube0, 0);
  238.     SetCollideType(puzzlecube1, 0);
  239.     
  240. return;
  241.  
  242. # ========================================================================================
  243. activated:                 // If player activates block
  244.    
  245.     # clear any previously uncleared camera interp
  246.     SetCameraLookInterp(2, 0);
  247.  
  248.     if ((GetSenderRef() == switch) && (flooded == 0) && (IsMoving(switch) == 0))
  249.     {
  250.         
  251.         # disable the player
  252.         StartCutscene(1);
  253.         SetActorFlags(player, 0x200000);
  254.         
  255.         #CopyOrientAndPos(lavaPos, lava_chan);
  256.         flooded = 1;
  257.         curCam = GetCurrentCamera();
  258.         # prep the player
  259.         DeselectWeapon(player);
  260.         Sleep(0.5);
  261.         # prep the actor
  262.         
  263.  
  264.         # set the puzzlecube to in play    if block is not in correct spot    for both blocks
  265.         If (blockinzone0 == 0)
  266.             {
  267.                 SetCollideType(puzzlecube0, 3);
  268.             }
  269.  
  270.         If (blockinzone1 == 0)
  271.             {
  272.                 SetCollideType(puzzlecube1, 3);
  273.             }
  274.         
  275.         # Line actor up...
  276.         CopyOrientAndPos(player, indy);        # actor takes position of the player
  277.         CopyPlayerHolsters(player, indy);     # make sure actor has matching props
  278.         
  279.         SetThingFlags(player, 0x80000);        # hide player, show actor
  280.         ClearThingFlags(indy, 0x80000);
  281.         
  282.         AISetLookThing(indy, switch);        # actor looks at the switch
  283.         AIWaitForStop(indy);
  284.         
  285.         # offset cam to switchcam position
  286.         SetExtCamOffsetToThing(switchcam);
  287.         
  288.         # actor hits the switch
  289.         PlayKey(indy, inReach, 4, 0x12, 0);
  290.         Sleep(0.25);
  291.         MovetoFrame(switch, 1, .5);
  292.         Sleep(0.8);
  293.  
  294.         # move lava objects to their ready positions
  295.         Rotate(lava_left, 90, 2, 0.01);
  296.         Rotate(lava_right, -90, 2, 0.01);
  297.         
  298.         # camera move to show action
  299.         SetCameraFocus(2, camPos);
  300.         SetCameraSecondaryFocus(2, indy);
  301.         Sleep(.25);
  302.         SetCameraLookInterp(2, 1);
  303.         SetCameraPosInterp(2, 1);
  304.         SetCameraInterpSpeed(2, 4.5);
  305.         Sleep(0.01);
  306.         SetCurrentCamera(2);
  307.         Sleep(0.3); # was 0.5
  308.         
  309.         # camera targets the moving blocks now
  310.         SetCameraSecondaryFocus(2, camtarget);
  311.         SetCameraFocus(2, blockCam);
  312.         #MovetoFrame(camPos, 1, 4.0);
  313.         
  314.         # sound fx
  315.         PlaySoundLocal(ancientdevice, 1.0, 0, 0x0, 0);
  316.         Sleep(4.5);
  317.         
  318.         # begin screenshake and move blocks
  319.         SetPulse(.1);
  320.         MovetoFrame(block1, 1, 1.1);
  321.         MovetoFrame(block0, 1, 1.1);
  322.  
  323.         # reset the lava sides for good measure
  324.         CopyOrientAndPos(lava_leftPos, lava_left);
  325.         CopyOrientAndPos(lava_rightPos, lava_right);
  326.  
  327.         # clear look and pos interps
  328.         SetCameraLookInterp(2, 0);
  329.         SetCameraPosInterp(2, 0);
  330.  
  331.         Sleep(1.0);
  332.         # show lava_chan and move it to "full" position
  333.         ClearThingFlags(lava_chan, 0x10);
  334.         MoveToFrame(lava_chan, 0, 0.2);
  335.         
  336.         # hide pushblocks
  337.         SetThingFlags(puzzleblock0, 0x80000);
  338.         SetThingFlags(puzzleblock1, 0x80000);
  339.         # slabs are shown
  340.         ClearThingFlags(puzzleslab0, 0x10);
  341.         ClearThingFlags(puzzleslab1, 0x10);
  342.         # slabs collide
  343.         SetCollideType(puzzleslab0, 3);
  344.         SetCollideType(puzzleslab1, 3);
  345.  
  346.         soundrun = PlaySoundLocal(waterrush, 1, 1, 0x01, 0);
  347.     }
  348.  
  349.     if ((GetSenderRef() == switch) && (flooded == 1) && (IsMoving(switch) == 0))
  350.     {
  351.         # disable the player
  352.         StartCutscene(1);
  353.         SetActorFlags(player, 0x200000);
  354.         
  355.         #CopyOrientAndPos(lavaPos, lava_chan);
  356.         ClearThingFlags(block0, 0x10);
  357.         ClearThingFlags(block1, 0x10);
  358.         flooded = 0;
  359.         curCam = GetCurrentCamera();
  360.  
  361.         # clear the puzzlecubes
  362.         SetCollideType(puzzlecube0, 0);
  363.         SetCollideType(puzzlecube1, 0);
  364.         
  365.         # prep the player
  366.         DeselectWeapon(player);
  367.         Sleep(0.5);
  368.         # prep the actor
  369.         
  370.         # Line actor up...
  371.         CopyOrientAndPos(player, indy);        # actor takes position of the player
  372.         CopyPlayerHolsters(player, indy);     # make sure actor has matching props
  373.         
  374.         SetThingFlags(player, 0x80000);        # hide player, show actor
  375.         ClearThingFlags(indy, 0x80000);
  376.         
  377.         AISetLookThing(indy, switch);        # actor looks at the switch
  378.         AIWaitForStop(indy);
  379.         
  380.         # offset cam to switchcam position
  381.         SetExtCamOffsetToThing(switchcam);
  382.         
  383.         # actor hits the switch
  384.         PlayKey(indy, inReach, 4, 0x12, 0);
  385.         MovetoFrame(switch, 1, .5);
  386.         Sleep(1.0);
  387.         
  388.         # camera move to show action
  389.         SetCameraFocus(2, camPos);
  390.         SetCameraSecondaryFocus(2, indy);
  391.         Sleep(.25);
  392.         SetCameraLookInterp(2, 1);
  393.         SetCameraPosInterp(2, 1);
  394.         SetCameraInterpSpeed(2, 4.5);
  395.         Sleep(0.01);
  396.         SetCurrentCamera(2);
  397.         Sleep(0.5);
  398.         
  399.         # camera looks down toward the action
  400.         SetCameraSecondaryFocus(2, camtarget);
  401.         SetCameraFocus(2, blockCam);
  402.         #MovetoFrame(camPos, 1, 4.0);
  403.         
  404.         # sound fx
  405.         PlaySoundLocal(ancientdevice, 1.0, 0, 0x0, 0);
  406.         
  407.         Sleep(4.5);
  408.         
  409.         # screenshake begins
  410.         SetPulse(.1);
  411.  
  412.         # reset the lava sides for good measure
  413.         CopyOrientAndPos(lava_leftPos, lava_left);
  414.         CopyOrientAndPos(lava_rightPos, lava_right);
  415.         
  416.         # show lava_chan and empty it
  417.         ClearThingFlags(lava_chan, 0x10);
  418.         ClearThingFlags(lava_left, 0x10);
  419.         ClearThingFlags(lava_right, 0x10);
  420.         
  421.         # restore floodplain surfaces to non lava
  422.         Call clearfloor;
  423.         
  424.         # stop the bubble FX
  425.         SendMessage(fieldCOG, user1);
  426.         
  427.         MoveToFrame(lava_chan, 1, 0.2);
  428.         Rotate(lava_left, 90, 2, 6.0);
  429.         Rotate(lava_right, -90, 2, 6.0);
  430.         
  431.         # move the blocks to open position
  432.         MovetoFrame(block1, 0, 1.1);
  433.         MovetoFrame(block0, 0, 1.1);
  434.  
  435.         # clear look and pos interps
  436.         SetCameraLookInterp(2, 0);
  437.         SetCameraPosInterp(2, 0);
  438.  
  439.         Sleep(1.5);
  440.         
  441.         # show pushblocks, hide slabs
  442.         ClearThingFlags(puzzleblock0, 0x80000);
  443.         ClearThingFlags(puzzleblock1, 0x80000);
  444.         # hide and no-collide the slabs
  445.         SetThingFlags(puzzleslab0, 0x10);
  446.         SetThingFlags(puzzleslab1, 0x10);
  447.         SetCollideType(puzzleslab0, 0);
  448.         SetCollideType(puzzleslab1, 0);
  449.         
  450.         sleep(.5);
  451.         Call returncam;
  452.         # reset the position of the lava_chan
  453.         SetThingFlags(lava_chan, 0x10);
  454.         SetThingFlags(lava_left, 0x10);
  455.         SetThingFlags(lava_right, 0x10);
  456.  
  457.         StopSound(soundrun, 2.0); 
  458.     }
  459. return;
  460.  
  461. # ========================================================================================
  462. entered:
  463.  
  464.     If ((GetSenderID() == 5) && (GetSourceRef() == puzzleblock0))
  465.     {
  466.         blockinzone0 = 1;
  467.         #print("block0 is in the zone");
  468.     }
  469.  
  470.     If ((GetSenderID() == 6) && (GetSourceRef() == puzzleblock1))
  471.     {
  472.         Sleep(0.5);
  473.         blockinzone1 = 1;
  474.         #print("block1 is in the zone");
  475.     }
  476.  
  477.     
  478. return;
  479.  
  480.  
  481. # ========================================================================================
  482. exited:
  483.  
  484.     If ((GetSenderID() == 5) && (GetSourceRef() == puzzleblock0))
  485.     {
  486.         blockinzone0 = 0;
  487.         #print("block0 is out of the zone");
  488.     }
  489.  
  490.     If ((GetSenderID() == 6) && (GetSourceRef() == puzzleblock1))
  491.     {
  492.         blockinzone1 = 0;
  493.         #print("block1 is out of the zone");
  494.     }
  495.  
  496.     If ((GetSenderID() == 6) && (GetSourceRef() == puzzleblock1))
  497.     {
  498.         blockinzone1 = 0;
  499.         #print("block1 is out of the zone");
  500.     }
  501.  
  502. return;
  503.  
  504.                 
  505. # ========================================================================================
  506. pulse:
  507.  
  508.     SetPOVShake('0.0 0.0 0.008', '0.0 0.0 0.0', 80.0, 0.80);
  509.     return;
  510.  
  511. # ========================================================================================
  512. arrived:
  513.  
  514.     If ((GetSenderRef() == lava_chan) && (GetCurFrame(lava_chan) == 0))
  515.     {
  516.         
  517.         If (cueplayed == 0)
  518.         {
  519.             PlaySoundLocal(awe_cue, 1.0, 1, 0x0, 0);
  520.             cueplayed = 1;
  521.         }
  522.         
  523.         
  524.         
  525.         # get lava planes into starting rotation position
  526.         Rotate(lava_left, 90, 2, 0.01);
  527.         Rotate(lava_right, -90, 2, 0.01);
  528.         WaitForStop(lava_right);
  529.         
  530.         # hide blocks and lava_chan 3do to avoid clipping with lava surfs
  531.         SetThingFlags(block0, 0x10);
  532.         SetThingFlags(block1, 0x10);
  533.         SetThingFlags(lava_chan, 0x10);
  534.  
  535.         # reset the position of the lava_chan
  536.         #CopyOrientAndPos(lavaPos, lava_chan); 
  537.         
  538.         # change canal surfaces to lava
  539.         for (i = 0; i <=5; i = i + 1)
  540.         {
  541.             SetFaceGeomode(canalFACE0[i], 4);                        # make faces draw                        
  542.             SetSurfaceFlags(canalFACE0[i], 0x200000);               # set lava bit
  543.             ClearAdjoinFlags(canalFACE0[i], 2);                     # adjoin cannot be passed through
  544.             ClearAdjoinFlags(GetSurfaceAdjoin(canalFACE0[i]), 2);   # double adjoin setting
  545.         }
  546.         
  547.         # change tile surfs to lava
  548.         for (i = 0; i <=13; i = i + 1)
  549.         {
  550.         SetSurfaceMat(tileFACE0[i], fireskin);
  551.         SetSurfaceFlags(tileFACE0[i], 0x200000);     #lava flag for tile faces
  552.         SetFaceLightMode(tileFACE0[i], 0);
  553.         }
  554.     
  555.     # show and rotate lavas left and right to their full positions
  556.     ClearThingFlags(lava_left, 0x10);
  557.     ClearThingFlags(lava_right, 0x10);
  558.     Rotate(lava_left, -90, 2, 2.5);
  559.     Rotate(lava_right, 90, 2, 2.5);
  560.     
  561.     Sleep(2.5);
  562.     
  563.     #    change floor surfaces to lava
  564.         for (i = 0; i <=11; i = i + 1)
  565.         {
  566.             SetFaceGeomode(lavaFACE0[i], 4);                        # make faces draw
  567.             SetSurfaceFlags(lavaFACE0[i], 0x200000);                # set lava bit
  568.             ClearAdjoinFlags(lavaFACE0[i], 2);                        # adjoin cannot be passed through
  569.             ClearAdjoinFlags(GetSurfaceAdjoin(lavaFACE0[i]), 2);    # double adjoin setting
  570.         }
  571.  
  572.     # start the bubble FX
  573.     SendMessage(fieldCOG, user0);
  574.  
  575.     # hide and reset the lava side 3dos
  576.     SetThingFlags(lava_left, 0x10);
  577.     SetThingFlags(lava_right, 0x10);
  578.     CopyOrientAndPos(lava_leftPos, lava_left);
  579.     CopyOrientAndPos(lava_rightPos, lava_right);
  580.     
  581.     Sleep(0.75);
  582.     Call returncam;
  583.     }
  584.  
  585.  
  586.  
  587.  
  588.  
  589. return;
  590.  
  591. # ========================================================================================
  592. clearfloor:    
  593.     
  594.     #    clear the floor surfaces that were lava
  595.     for (i = 0; i <=11; i = i + 1)
  596.         {
  597.             SetFaceGeomode(lavaFACE0[i], 0);                    # make faces no draw
  598.             ClearSurfaceFlags(lavaFACE0[i], 0x200000);            # clear lava bit
  599.             SetAdjoinFlags(lavaFACE0[i], 2);                    # adjoin can be passed through
  600.             SetAdjoinFlags(GetSurfaceAdjoin(lavaFACE0[i]), 2);    # double adjoin clearing
  601.         }
  602.  
  603.     #    clear the canal surfaces that were lava
  604.     for (i = 0; i <=5; i = i + 1)
  605.         {                                                        
  606.             SetFaceGeomode(canalFACE0[i], 0);                   # make faces no draw           
  607.             ClearSurfaceFlags(canalFACE0[i], 0x200000);         # clear lava bit               
  608.             SetAdjoinFlags(canalFACE0[i], 2);                   # adjoin can be passed through 
  609.             SetAdjoinFlags(GetSurfaceAdjoin(canalFACE0[i]), 2); # double adjoin clearing      
  610.         }
  611.  
  612.     # reset the tile surfaces
  613.         for (i = 0; i <=13; i = i + 1)
  614.         {
  615.         SetSurfaceMat(tileFACE0[i], tileskin);        # swap texture back to tile
  616.         ClearSurfaceFlags(tileFACE0[i], 0x200000);     #lava flag for tile faces
  617.         SetFaceLightMode(tileFACE0[i], 4);            # set to gourad lighting
  618.         }
  619.  
  620. return;        
  621. # ========================================================================================
  622. returncam:
  623.  
  624. If (flooded == 0)
  625. {
  626.     StopSound(soundrun, 4.0);
  627.         
  628.     Sleep(0.5);
  629.     SetCameraLookInterp(2,0);
  630.     SetCameraSecondaryFocus(2, doorcamtarget);
  631.     SetCameraFocus(2, camPos2);
  632.     MoveToFrame(camPos2, 1, 2.5);
  633.     MoveToFrame(door, 0, 1.5);
  634.     WaitforStop(door);
  635.     SetPulse(0);
  636.     Sleep(1.0);
  637.     
  638.     MovetoFrame(camPos2, 0, 100);
  639.     MovetoFrame(switch, 0, .5);
  640.  
  641.     SetThingFlags(indy, 0x80000);
  642.     ClearThingFlags(player, 0x80000);
  643.     ClearActorFlags(player, 0x200000);
  644.     
  645. }
  646.  
  647. else If (flooded == 1)
  648. {
  649.     StopSound(soundrun, 3.0);
  650.         
  651.     #camera shows the exit door opening
  652.     Sleep(0.5);
  653.     SetCameraLookInterp(2,0);
  654.     SetCameraSecondaryFocus(2, doorcamtarget);
  655.     SetCameraFocus(2, camPos2);
  656.     MoveToFrame(camPos2, 1, 2.0);
  657.     MoveToFrame(door, 1, 1.5);
  658.     WaitforStop(door);
  659.     # stop screenshake
  660.     SetPulse(0);
  661.     Sleep(1.0);
  662.     
  663.     # hide actor show player
  664.     SetThingFlags(indy, 0x80000);
  665.     ClearThingFlags(player, 0x80000);
  666.     
  667.     # reset event camera positions
  668.     MovetoFrame(camPos2, 0, 100);
  669.     MovetoFrame(switch, 0, .5);
  670.     
  671. }
  672.  
  673. If (bridgeout == 0)        # collapse the bridge segments
  674.     {
  675.     bridgeout = 1;
  676.     # cut to camera at walkway segments
  677.     SetPulse(0.05);    # a little screenshake
  678.     SetCameraLookInterp(2, 0);
  679.     SetCameraSecondaryFocus(2, walkway1);
  680.     SetCameraFocus(2, bridgeCam);
  681.     PlaySoundLocal(stress, 8, 1, 0x0, 0);
  682.     Sleep(1.0);
  683.     SetCameraLookInterp(2, 1);
  684.     SetCameraInterpSpeed(2, 3.0);
  685.     PlaySoundLocal(breakway, 0.75, 1, 0x0, 0);
  686.     
  687.     #MovetoFrame(walkway0, 3, 8);
  688.     CreateThing(fallwalkA, debspot0);
  689.     CreateThing(fallwalkB, debspot1);
  690.     CreateThing(fallwalkC, debspot2);
  691.     CreateThing(fallwalkA, debspot3);
  692.     
  693.     DestroyThing(walkway0);
  694.     
  695.     Sleep(0.25);
  696.     CreateThing(fallwalkD, debspot4);
  697.     CreateThing(fallwalkE, debspot5);
  698.     
  699.     DestroyThing(walkway1);
  700.  
  701.     SetCameraSecondaryFocus(2, flamespot);
  702.     
  703.     Sleep(0.25);
  704.     CreateThing(fallwalkF, debspot6);
  705.     DestroyThing(walkway2);
  706.     
  707.     Sleep(1.5);
  708.     CreateThing(invis_shot, flamespot);
  709.     Sleep(0.5);
  710.     CreateThing(invis_shot, flamespot);
  711.     CreateThing(invis_shot, flamespot);
  712.     Sleep(0.25);
  713.     CreateThing(invis_shot, flamespot);
  714.     Sleep(0.25);
  715.     CreateThing(invis_shot, flamespot);
  716.     Sleep(1.5);
  717.     }
  718. SetCameraLookInterp(2, 0);
  719. ClearActorFlags(player, 0x200000);
  720. EndCutScene();
  721. SetCurrentCamera(curCam);
  722. RestoreExtCam();
  723. SetCameraFocus(2, camPos);
  724. SetPulse(0.0);
  725.  
  726. #If (bridgeout == 1)
  727. #{
  728. #    DestroyThing(walkway0);
  729. #    DestroyThing(walkway1);
  730. #    SetPulse(0.0);
  731. #    DestroyThing(walkway2);
  732. #    bridgeout = 2;
  733. #}
  734.  
  735. return;
  736. # ========================================================================================
  737.  
  738. end
  739.  
  740.